/**
 * @file    bt_lock.c
 * @author  chenwenrui
 * @brief   电机锁控制模块
 * @version V1.0
 * @date 2023-12-19
 * @copyright Copyright (c) 2022
 *
 * 系统资源：
 *      GPIO:
 *          P1_2 -> 霍尔输入-开锁到位
 *          P1_5 -> 霍尔输入-关锁到位
 *          P3_2 -> 电机输出-正转
 *          P3_3 -> 电机输出-反转
 *          P5_4 -> 霍尔输入-弹片
 *
 */

#include "GPIO.h"

//#define HUOER1_PORT P15 
//#define HUOER2_PORT P12 
#define HUOER3_PORT P54 

//#define MOTOR0_PORT P32
//#define MOTOR1_PORT P33

////static void motor_init()
////{
////    // P3M0|=(1<<3);
////    // P3M1&=(~(1<<3));
////    // P5M0|=((1<<5));
////    // P5M1&=(~(1<<5));
////}

//// 拉高阻
////static void motor_highz()
////{
////    // P3M1|=(1<<3);
////    // P3M0&=(~(1<<3));
////    // P5M1|=((1<<5));
////    // P5M0&=(~(1<<5));
////}
///**
// * @brief  电机锁正转
// * @note
// * @retval
// */
// void bt_lock_motor_forward(void)
//{
//    //motor_init();
//    MOTOR0_PORT = 0;
//    // Delay1ms();
//    MOTOR1_PORT = 1;
//}

///**
// * @brief  电机锁反转
// * @note
// * @retval
// */
// void bt_lock_motor_reserve(void)
//{
//    //motor_init();
//    MOTOR1_PORT = 0;
//    // Delay1ms();
//    MOTOR0_PORT = 1;
//}

///**
// * @brief  电机锁停止转动
// * @note
// * @retval
// */
// void bt_lock_motor_stop(void)
//{
//    MOTOR0_PORT = 1;
//    MOTOR1_PORT = 1;
//    //motor_highz();
//}

///**
// * @brief  锁打开是否到位
// * @note
// * @retval 0-未到位 1-到位
// */
//unsigned char bt_lock_is_opened(void)
//{
//    return !HUOER1_PORT;
//}
///**
// * @brief  锁关闭是否到位
// * @note
// * @retval 0-未到位 1-到位
// */
//unsigned char bt_lock_is_closed(void)
//{
//    return !HUOER2_PORT;
//}
/**
 * @brief  锁弹片是否按下
 * @note
 * @retval 0-未到位 1-到位
 */
unsigned char bt_lock_is_pressed(void)
{
    return !HUOER3_PORT;
}
/**
 * @brief  锁具初始化
 * @note
 * @retval
 */
void bt_lock_init(void)
{
    GPIO_InitTypeDef xdata GPIO_InitStructure; // 结构定义
//    // 霍尔x2
//    GPIO_InitStructure.Pin = GPIO_Pin_2 | GPIO_Pin_5; // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
//    GPIO_InitStructure.Mode = GPIO_HighZ;             // 指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
//    GPIO_Inilize(GPIO_P1, &GPIO_InitStructure);       // 初始化
    // 滑板
    GPIO_InitStructure.Pin = GPIO_Pin_4;        // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
    GPIO_InitStructure.Mode = GPIO_HighZ;       // 指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    GPIO_Inilize(GPIO_P5, &GPIO_InitStructure); // 初始化
//    // 电机
//    GPIO_InitStructure.Pin = GPIO_Pin_2 | GPIO_Pin_3; // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
//    GPIO_InitStructure.Mode = GPIO_OUT_PP;            // 指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
//    GPIO_Inilize(GPIO_P3, &GPIO_InitStructure);       // 初始化
}
